package com.tinet.sistReserva.ejb;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import com.tinet.sistReserva.DAO.ReservaDao;
import com.tinet.sistReserva.model.Reserva;
import com.tinet.sistReserva.model.Usuario;

/**
 * 
 * Clase que implementa los metodos de la interfaz InterfazReservaBean.
 * 
 * @author Frmancil
 */
@Stateless(mappedName = "reservaBean", name = "reservaBean")
public class ReservaBean implements InterfazReservaBean {

    /**
     * Manejador de entidad y contexto de persistencia.
     */
    @PersistenceContext(unitName = "sistreserva_bd_fm")
    private EntityManager emReserva;
    /**
     * Instancia de ReservaDao para llamar a sus metodos.
     */
    private ReservaDao daoReserva;

    /**
     * 
     * Instanciador de nuevo Entity Manager para cada acceso a la clase.
     * 
     */
    @PostConstruct
    public void init() {
        daoReserva = new ReservaDao(emReserva);
    }

    /**
     * {@inheritDoc}
     */
    public void reservarSala(Reserva reservaARealizar) {
        daoReserva.reservar(reservaARealizar);
    }

    /**
     * {@inheritDoc}
     */
    public void eliminarReservaSala(Reserva reservaAEliminar) {
        daoReserva.eliminar(reservaAEliminar);
    }

    /**
     * {@inheritDoc}
     */
    public ArrayList<Reserva> listarReservas() {

        return daoReserva.listar();
    }

    /**
     * {@inheritDoc}
     */
    public ArrayList<Reserva> listarMisReservas(Usuario usuario) {

        return daoReserva.listarMisReservas(usuario);
    }

}
